fix(assert): remove runtime assert that could crash production builds
authorMatthieu Gallien <matthieu.gallien@nextcloud.com>
Thu, 24 Apr 2025 10:09:48 +0000 (12:09 +0200)
committerJyrki Gadinger <nilsding@nilsding.org>
Mon, 28 Apr 2025 06:09:28 +0000 (08:09 +0200)
use debug only assert to remove the possibility that we self inflict
crashes on users

Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
src/gui/folder.cpp
src/libsync/abstractnetworkjob.cpp
src/libsync/discovery.cpp
src/libsync/discoveryphase.cpp
src/libsync/owncloudpropagator.cpp

index f0454c97fbff08d7e8de885318739788ef700d5e..26df7db1272a7387d1b130960c7b2d20e8652d36 100644 (file)
@@ -142,7 +142,7 @@ Folder::Folder(const FolderDefinition &definition,
     });
 
     // Potentially upgrade suffix vfs to windows vfs
-    ENFORCE(_vfs);
+    Q_ASSERT(_vfs);
     if (_definition.virtualFilesMode == Vfs::WithSuffix
         && _definition.upgradeVfsMode) {
         if (isVfsPluginAvailable(Vfs::WindowsCfApi)) {
@@ -513,8 +513,8 @@ void Folder::createGuiLog(const QString &filename, LogStatus status, int count,
 
 void Folder::startVfs()
 {
-    ENFORCE(_vfs);
-    ENFORCE(_vfs->mode() == _definition.virtualFilesMode);
+    Q_ASSERT(_vfs);
+    Q_ASSERT(_vfs->mode() == _definition.virtualFilesMode);
 
     const auto result = Vfs::checkAvailability(path(), _vfs->mode());
     if (!result) {
index 9b5590fd2e1fb249099e0aa42ba2d3bbd7955d4e..86c9e57b5bc34393391a03fcb3728c75fdc1aded 100644 (file)
@@ -483,7 +483,7 @@ QString networkReplyErrorString(const QNetworkReply &reply)
 
 void AbstractNetworkJob::retry()
 {
-    ENFORCE(_reply);
+    Q_ASSERT(_reply);
     auto req = _reply->request();
     QUrl requestedUrl = req.url();
     QByteArray verb = HttpLogger::requestVerb(*_reply);
index ec86e7f4e3363c00d3412d56656869d83bde4457..a97585a1835505c9dcd8a31a5c78dbff68ac2bb7 100644 (file)
@@ -839,7 +839,7 @@ void ProcessDirectoryJob::processFileAnalyzeRemoteInfo(const SyncFileItemPtr &it
             item->_size = sizeOnServer;
 
             if (serverEntry.isDirectory) {
-                ENFORCE(dbEntry.isDirectory());
+                Q_ASSERT(dbEntry.isDirectory());
                 item->_instruction = CSYNC_INSTRUCTION_UPDATE_METADATA;
             } else if (!localEntry.isValid() && _queryLocal != ParentNotChanged) {
                 // Deleted locally, changed on server
index 469dec380165d0ee5f4d49c3fbd4ed31de45774b..9b72732c4c11bc8c8c8718215479151b30f9ec64 100644 (file)
@@ -249,10 +249,10 @@ void DiscoveryPhase::markPermanentDeletionRequests()
 
 void DiscoveryPhase::startJob(ProcessDirectoryJob *job)
 {
-    ENFORCE(!_currentRootJob);
+    Q_ASSERT(!_currentRootJob);
     connect(this, &DiscoveryPhase::itemDiscovered, this, &DiscoveryPhase::slotItemDiscovered, Qt::UniqueConnection);
     connect(job, &ProcessDirectoryJob::finished, this, [this, job] {
-        ENFORCE(_currentRootJob == sender());
+        Q_ASSERT(_currentRootJob == sender());
         _currentRootJob = nullptr;
         if (job->_dirItem)
             emit itemDiscovered(job->_dirItem);
index 30b48ef874a1cdb1122a5ece7a5c92404adf8035..b89e203fcd58ebf263bea392093ab3e285549e43 100644 (file)
@@ -226,7 +226,7 @@ void blacklistUpdate(SyncJournalDb *journal, SyncFileItem &item)
 void PropagateItemJob::done(const SyncFileItem::Status statusArg, const QString &errorString, const ErrorCategory category)
 {
     // Duplicate calls to done() are a logic error
-    ENFORCE(_state != Finished);
+    Q_ASSERT(_state != Finished);
     _state = Finished;
 
     _item->_status = statusArg;
@@ -1294,7 +1294,7 @@ void PropagatorCompositeJob::slotSubJobFinished(SyncFileItem::Status status)
     // Delete the job and remove it from our list of jobs.
     subJob->deleteLater();
     int i = _runningJobs.indexOf(subJob);
-    ENFORCE(i >= 0); // should only happen if this function is called more than once
+    Q_ASSERT(i >= 0); // should only happen if this function is called more than once
     _runningJobs.remove(i);
 
     // Any sub job error will cause the whole composite to fail. This is important